Contexto

Los datos diabetes-data.csv contienen la información de medición de glucosa en la sangre de 70 pacientes con diabetes observados en diferentes momentos del tiempo (horas, días, semanas, meses).

El contenido y formato de los datos es el siguiente:

  1. Fecha (date) en formato MM-DD-YYYY
  2. Hora (time) en formato XX:YY
  3. Código (code)
  4. Nivel de glucosa (value)
  5. Indicadora de paciente (individual)

Los datos de concentración en la sangre se obtienen de dos fuentes:

Las mediciones eletrónicas automáticas se obtienen con etiquetas de tiempo específicas, mientras que las mediciones obtenidas de los registros escritos corresponden a horarios ficticios con la siguiente relación: Desayuno (08:00), comida (12:00), cena (18:00), y hora de dormir (22:00).

El campo code corresponde al tipo de insulina administrada al paciente.

Nota: La información de la adminitración de insulina, en este momento, es irrelevante.

Un primer vistazo a los datos

     date               time               code          value       
 Length:29264       Length:29264      Min.   : 4.0   Min.   :  0.00  
 Class :character   Class1:hms        1st Qu.:33.0   1st Qu.:  6.00  
 Mode  :character   Class2:difftime   Median :48.0   Median : 24.00  
                    Mode  :numeric    Mean   :46.5   Mean   : 79.42  
                                      3rd Qu.:60.0   3rd Qu.:142.00  
                                      Max.   :72.0   Max.   :501.00  
                                                     NA's   :8       
   individual      atributo        
 Min.   : 1.00   Length:29264      
 1st Qu.:21.00   Class :character  
 Median :34.00   Mode  :character  
 Mean   :36.45                     
 3rd Qu.:55.00                     
 Max.   :70.00                     
                                   
Observations: 29,264
Variables: 6
$ date       <chr> "04-21-1991", "04-21-1991", "04-21-1991", "04-21-19...
$ time       <time> 09:09:00, 09:09:00, 09:09:00, 17:08:00, 17:08:00, ...
$ code       <int> 58, 33, 34, 62, 33, 48, 58, 33, 34, 33, 62, 33, 58,...
$ value      <dbl> 100, 9, 13, 119, 7, 123, 216, 10, 13, 2, 211, 7, 25...
$ individual <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
$ atributo   <chr> "medición de glucosa en sangre antes del desayuno",...

1. ¿Existe discrepancia (en media o distribucional) entre las mediciones reportadas de registros escritos en papel y las que son reportadas electrónicamene?

Modelo diferencia mediciones en papel o electrónicas

A partir de lo anterior, puede extenderse el modelo para considerar un modelo jerárquico que responda si existe o no diferencias entre las mediciones.

El modelo se define de la siguiente manera:

\[ log(y_{it}) \sim N(\mu_{it}, \tau_{i}) \\ \mu_{it} = \alpha_{i} + \beta_{i} * electrónico_{it} \]

Además: \[ \alpha_{i} \sim N(0, 0.1) \\ \tau_{i} \sim gamma(c_0, c_1) \\ \beta \sim N(0, 0.01) \] donde:

  • \(\alpha_i\) es el nivel general de glucosa de cada individuo i
  • \(electrónico_{it}\) indica si la medición fue realizada electrónicamente o en papel

Para comprobar que no existen diferencias significativas entre las mediciones en papel o electrónicas tenemos que: \[ H_{o}: \beta = 0 \\ H_{1}: \beta \neq 0 \]

Siguiendo el modelo utilizando 5000 iteraciones, 3 cadenas y quemando las primeras 1000, se puede observar que cero pertenece al intervalo de la beta, por lo que no se rechaza la hipótesis nula, lo que implica que no existen diferencias entre las mediciones realizadas en papel o electrónicamente.

Además, se puede observar que los valores generales de glucosa como su varianza varían por paciente como se muestra en las gráficas siguientes.

2. ¿ Existe discrepancia entre las mediciones de glucosa de los pacientes entre las cuatro horas del día donde se miden?

Modelo diferencia mediciones en las 4 horas del día

Con base en lo anterior, sugerimos un modelo jerárquico para responder si existe discrepancia en las mediciones realizadas en las 4 distintas horas del día

El modelo sugerido es

\[ log(y_{it}) \sim N(\mu_{i}, \tau_{i}) \\ \mu_{i} = \alpha_{ij} + \beta_{1} * horario8am_{i} + \beta_{2} * horario12pm_{i} + \beta_{3} * horario18pm_{i} + \beta_{4} * horario22pm_{i} \]

Además:

\[ \alpha_{i} \sim N(0, 0.001) \\ \tau_{i} \sim gamma(c_0, c_1) \\ c0 \sim gamma(1, 1) \\ c1 \sim gamma(1, 1) \\ \beta_i \sim N(0, 0.001) \ ; \ i = 1,2,3,4 \] donde:

  • \(\alpha_i\) es el nivel de glucosa de cada individuo i, i = 1,2, …, 70
  • \(horario8am_{i}\) indica si la medición fue realizada en el desayuno
  • \(horario12pm_{i}\) indica si la medición fue realizada en la comida
  • \(horario18pm_{i}\) indica si la medición fue realizada en la cena
  • \(horario22pm_{i}\) indica si la medición fue realizada al dormir

El modelo se corrió con 3 distintas cadenas, 5000 iteraciones donde las primeras 1000 son de calentamiento

El resumen estadístico para las betas asociadas a las 4 horas se presentan a continuación y con esto podemos decir que

  • La media de la beta2 que corresponde a la comida es la única que difiere significativamente con respecto al resto de las mediciones.
  • El valor medio de las betas es positivo para todas, menos el de la comida.
  • La Desviación estándar de las 4 horas es muy similar.
  • De igual manera, se muestra el limite inferior y superior del IC al 95%

A continuación se muestra una gráfica boxplot con las betas asociadas a cada momento (desyauno/comida/cena/dormir) y observamos lo que habiamos notado:

  • La única con niveles bajos de glucosa es a la hora de la comida. El resto, difieren ligeramente entre ellos por lo que en conclusión podríamos decir que sí existe discrepancia en las mediciones pero es más evidente en la medición de las 12 (a la hora de la comida) que se debe a lo explicado previamente.

3. ¿ Existe discrepancia de las mediciones de glucosa entre pacientes?

4. ¿ Existe discrepancia entre las mediciones de glucosa asociadas con la administración de insulina con respecto a las demás?

Sí, son más bajas:

5. ¿Existe una discrepancia clara entre los pacientes que reportan sus niveles de glocosa depués de haber ingerido más alimentos de lo usual?

Modelo diferencia consumo de alimentos

Para esta pregunta se realizó un modelo jeráquico, la jerarquía se aplica a nivel individuo en donde los individuos comparten la precisión. Esto nos permite mejorar la precisión de las estimaciones de los parámetros para los que no se tienen suficientes observaciones. Por ejemplo, en este caso tenemos individuos con menos días observados.

En este primer modelo no se busca predecir el nivel de glucosa sino verificar si existe una diferencia clara entre los días que se ingieren más alimentos de lo usual.

Se crea una base con el promedio diario de glucosa con un indicador que especifica si en ese día el paciente ingirió más alimentos de lo normal.

  • Simulaciones de los parámetros

En esta gráfica se observa que hay una discrepancia clara entre los días que ingieren más alimentos de lo usal. \(Beta1\) es negativa y representa a los días que se consumió una cantidad normal de alimentos y \(Beta2\) es positiva lo cual significa que el nivel de glucosa aumenta si se come más de lo normal.

Se grafica el parámetro \(alpha\) para observar si existe alguna diferencia entre individuos. Observamos que se comportan de manera similar. (Los intervalos se empalman)

  • Resúmenes estadístico de los parámetros monitoreados
                   mean        2.5%       97.5%
beta.adj[1] -0.03371274 -0.04649043 -0.02045976
beta.adj[2]  0.03371274  0.02045975  0.04649043
  • DIC
[1] 41313.21
  • Devianza
[1] 38798.04

Modelo nivel de glucosa

Queremos predecir la medición promedio de glucosa para un individuo cuando come una cantidad de alimentos normal o cuando se excede.

Para plantear este modelo, construimos una base con el promedio de las mediciones por individuo, separando por el tipo de consumo.

En exploratorio de los datos vimos que la mediana del nivel de gluscosa es mayor cuando se excede de la cantidad de alimentos habitual.

  • Gráfica observado vs ajustado

En la gráfica de ajustados vs osbservados se aprecia que los puntos están alrededor de una linea de 45º. Podemos ver que sobreestimamos mediciones pequeñas y subestimas mediciones grandes.

  • Intervalos de confianza

Los datos observados se encuentran dentro de nuestros intervalos de confianza.

  • Simulaciones de los parámetros

Observamos que las betas indican una discrepancia entre la diferencia de la ingesta de alimentos, pero no es tan discrminante como el modelo anterior. Esto se puede deber a que estamos promediando individuos y no individuos-días.

Se grafica el parámetro \(alpha\) para observar si existe alguna diferencia entre individuos. Observamos que se comportan de forma similar. Sin embargo, en este caso hay alphas cuyos intervalos no se interceptan, entonces estos individuos sí tienen comportamiento distinto en sus mediciones de glucosa.

En este modelo se obtiene un mejor DIC y \(R^2\).

  • Resúmenes estadístico de los parámetros monitoreados
                   mean         2.5%        97.5%
beta.adj[1] -0.03977104 -0.070395726 -0.007816606
beta.adj[2]  0.03977104  0.007816606  0.070395726
  • DIC
[1] 1022.333
  • R2
[1] 0.8289517
  • Devianza
[1] 915.7123

Referencias bibliográficas

Anexo

A continuación se muestra el código de los modelos asociados a la pregunta 1,2 y 5.

Anexo: Modelo pregunta 1


model
{
  #Likelihood
  for (i in 1:N) {
    y[i] ~ dnorm(mu[i], tau[indiv[i]])
    mu[i] <- alpha[indiv[i]] + beta[1] * x1[i]
  }

  c0 ~ dgamma(.001, 1)
  c1 ~ dgamma(1, 1)
  
  # Previas individuos
  for(i in 1:nindiv){
    alpha[i] ~ dnorm(0, 0.1)
    tau[i] ~ dgamma(c0, c1)
  }
  
  # Previas horas
  beta ~ dnorm(0, 0.01)
  
  ## predicciones
  for(i in 1:N) {
    yf1[i] ~ dnorm(mu[i], tau[indiv[i]])
  }
  }

Anexo: Modelo pregunta 2

model
{
  #Likelihood
  for (i in 1:n) {
  
  y[i] ~ dnorm(mu[i], tau[i])
  
  mu[i] <- alpha[indiv[i]] +
           beta[1] * horario_8am[i] +
           beta[2] * horario_12pm[i] +
           beta[3] * horario_18pm[i] +
           beta[4] * horario_22pm[i]
    
  }
  
  # Previas precisión mediciones
  for(j in 1:n){
    tau[j] ~ dgamma(c0, c1)
  }
  c0 ~ dgamma(1, 1)
  c1 ~ dgamma(1, 1)
  
  # Previas individuos
  for(i in 1:n_indiv){
    alpha[i] ~ dnorm(0, 0.001)
  }
  
  # Previas horas
  for(k in 1:m){
    beta[k] ~ dnorm(0, 0.001)
  }
  
  ## estimabilidad
  for(k in 1:m){
    beta.adj[k] <- beta[k] - mean(beta[])
  }
  
  
  ## predicciones
  for(i in 1:n) {
      yf1[i] ~ dnorm(mu[i], tau[i])
  }
}

Anexo: Modelo pregunta 5

model{

# Verosimilitud
for (i in 1:n) {

    y[i] ~ dgamma(r[i], lambda[i])
    eta[i] <- alpha[indiv[i]] + beta[x[i]]
    r[i] <- lambda[i]*mu[i]
    
    ## Liga
    log(mu[i]) <- eta[i]
    }

#Priors 
for (i in 1:n_indiv) {
alpha[i] ~ dnorm(0,tau.a)
}

for (j in 1:2) { beta[j] ~ dnorm(0,0.001) }

tau.a ~ dgamma(0.001,0.001)

for(i in 1:n){lambda[i] ~ dunif(0,1)}

#Prediction 1
for (i in 1:n) { yf1[i] ~ dgamma(r[i], lambda[i]) }

#Estimable quentities
for(j in 1:2){
    beta.adj[j] <- beta[j] - mean(beta[])
}

}